home *** CD-ROM | disk | FTP | other *** search
/ Die Ultimative Software-P…i Collection 1996 & 1997 / Die Ultimative Software-Pakete CD-ROM fur Atari Collection 1996 & 1997.iso / d / diskmoni / resauce / resauce.txt < prev   
Encoding:
Text File  |  1996-11-17  |  15.8 KB  |  297 lines

  1.                    R    E    S    A    U    C    E
  2.                   =================================
  3.                     geschrieben in GFA-Basic 2.02
  4.                        von Tilman Neumann 1990
  5.  
  6.  
  7.  --------------- Allgemeine Informationen zum Programm ---------------------
  8.  
  9.  'RESAUCE' ist ein Utility-Paket, daß Programmierern beim Umgang mit 
  10.  GEM-Resourcen etwas mehr Komfort bringen soll.
  11.  Der gesamte Funktionsumfang von 'RESAUCE' steht nur den den GFA-Basic-
  12.  Programmierern offen, da einige Funktionen Sourcecode für diese Sprache  
  13.  erzeugen.
  14.  
  15.  'RESAUCE' wurde aus folgenden Gründen geschrieben:
  16.  
  17.     1.) Ich wußte noch nicht, wie man RSC-Dateien per GEM in eigene
  18.         Programme einbindet und wollte mir dieses durch RESAUCE
  19.         erleichtern.
  20.     2.) Ich wollte direkter als gewöhnlich auf die Resourcen zugreifen
  21.         können, da dann Manipulationen leichter durchzuführen sind.
  22.     3.) Es nervte mich, daß die Resourcen als separate Dateien 
  23.         auf dem gleichen Pfad wie das Hauptprogramm vorliegen müssen 
  24.         und beim Kopieren leicht vergessen werden können.
  25.          
  26.  
  27.  
  28.  ------------------- Funktionsgruppen von 'RESAUCE' ------------------------  
  29.  
  30.  1.) Speicher-Monitor.
  31.      Mit dem Speichermonitor kann man ein bißchen im RAM und ROM rumstöbern.
  32.      Er ist jedoch ziemlich primitiv und enthält keine komplexeren Befehle.
  33.      ACHTUNG: Fehlerhafte Zugriffe werden nicht abgefangen !!
  34.       
  35.  2.) Datei-Monitor zur Edierung von Dateien beliebigen Formats.
  36.  
  37.  3.) Analyse und Manipulation von RSC-Dateien.
  38.      Alle Routinen im Manipulations-Menü habe ich ursprünglich geschrieben,
  39.      weil deren Funktionen auch von der AES-Routine 'rsrc_load' ausgeführt
  40.      werden, die ich nachgebildet habe (wird auf Wunsch beim Umwandeln der
  41.      RSC-Datei in GFA-Basic-DATAs miterzeugt !). Mit den Analyse-Funktionen 
  42.      konnte ich so problemlos überprüfen, ob die Routinen funktionieren.
  43.      Da seit der Version 1.2 in den Analyse-Funktionen stets die absolute 
  44.      und relative Adresse von Strukturen usw. angegeben werden, hat 
  45.      zumindest die Funktion zur Adreß-Umwandlung keinen großen Wert mehr,
  46.      da man die Veränderungen in 'RESAUCE' nicht mehr erkennen kann. Ich 
  47.      habe die Routine der Komplettheit halber aber dringelassen.
  48.  
  49.  4.) Optimierung von RSC-Dateien.
  50.      Diese Funktion verkürzt RSC-Dateien, indem doppelte Strings und Bilder
  51.      gelöscht werden und deren Zeiger entsprechend umgesetzt werden.
  52.      Die Optimierung bringt im Schnitt ca. 10%, die Funktionstüchtigkeit
  53.      des Resultats zu 99% gewährleistet.
  54.      Man könnte zwar durch das Löschen identischer Strukturen noch eine 
  55.      weitere Optimierung erreichen; dies habe ich jedoch nicht eingebaut, da
  56.      der Mehraufwand erheblich wäre (ca. 20 kB !) und die weitere Verkürzung
  57.      nicht mehr so viel bringen würde.
  58.   
  59.  5.) Umwandlung von RSC-Dateien in GFA-Basic.
  60.      Die DATAs werden an eine Routine angehängt, die die DATAs in ein
  61.      reserviertes Speicherstück lädt und diese Resource dann wie die AES-
  62.      Funktion 'rsrc_load' initialisiert.
  63.  
  64.  6.) Analyse von Definitionsdateien.
  65.      Diese Dateien enthalten die Namen der Variablen, die man den Objekten
  66.      und Bäumen im RCS gegeben hat.
  67.      Man kann solche Dateien von 'RESCAUCE' auswerten und auch in GFA-Basic
  68.      umwandeln lassen.
  69.      Übrigens: Def.-Dateien mit der Endung '*.DEF' sind zum Kuma-Format              
  70.      kompatibel. Man muß also nur die Extension in '*.RSD' umbenennen und
  71.      kann die Def.-Datei dann mit 'RESAUCE' laden.
  72.  
  73.  
  74.  ------------- Differenzierte Beschreibung aller Funktionen ----------------
  75.  
  76.     1. Über RESAUCE: Kurzinfos über dieses Programm
  77.     2. Lade-Menü  
  78.        1. RSC-Datei unverändert laden:
  79.           Über diesen Menüpunkt wird eine RSC-Datei in den Speicher 
  80.           geladen. Der nötige Speicher wird mit GEMDOS 'Malloc' 
  81.           reserviert, um jeden Zugriff anderer Programme oder des GEM
  82.           auf diese Datei zu verhindern. Die geladene Datei wird in 
  83.           keinster Weise verändert. Alle folgenden Funktionen beziehen
  84.           sich auf diese Datei, bis eine neue geladen oder RESAUCE
  85.           beendet wird.
  86.           ACHTUNG: Es wird nicht überprüft, ob der Benutzer wirklich 
  87.                    eine RSC-Datei geladen hat! Das Laden anderer 
  88.                    Dateien über diesen Menüpunkt führt mit Sicherheit
  89.                    zu schweren Fehlern, da die Strukturen der Datei
  90.                    überprüft und sogar geändert werden können.
  91.                    Zum Laden von Nicht-RSC-Dateien benutzen Sie bitte
  92.                    den Menüpunkt 2.5!
  93.        2. RSC-Datei mittels AES 'Rsrc_load' laden:
  94.           Durch diesen Menüpunkt wird eine RSC-Datei mittels der AES-
  95.           Funktion 'Rsrc_load' geladen. Diese führt folgende Tätig-
  96.           keiten durch: - Speicher reservieren
  97.                         - RSC-Datei per AES 'shel_write' suchen 
  98.                         - RSC-Datei in reservierten Speicher laden   
  99.                         - alle Objektkoordinaten mittels AES 
  100.                           'rsrc_obfix' umrechnen
  101.                         - Zeiger aller Strukturen von relativer auf
  102.                           absolute Adressierung umrechnen
  103.                         - Zeiger in der Liste von Zeigern auf die 
  104.                           Objektbäume umrechnen
  105.                         - einige Werte im AES-internen GLOBAL[]-Feld
  106.                           setzen
  107.           ACHTUNG: Der RSC-Header wird   N I E M A L S   verändert !!
  108.        3. Definitionsdatei im Format von Kuma (*.RSD) laden:
  109.           Definitionsdateien sind Dateien, in denen das RCS zu einer RSC-
  110.           Datei die vom Programmierer angegebenen Variablennamen der Bäume/
  111.           Objekte abspeichert.
  112.           Mit 'RESAUCE' ist es möglich, solche Dateien zwischen den Formaten
  113.           von Kuma und DRI zu konvertieren. Dadurch kann man mit beiden RCS-
  114.           Programmen an derselben RSC-Datei arbeiten.
  115.           Zur Konvertierung muß man die Definitionsdatei nur laden und im 
  116.           gewünschten Format wieder abspeichern.
  117.           ANMERKUNG: Es gibt auch noch Definitions-Dateien mit der Extension
  118.                      *.DEF. Diese sind vom alten DRI-RCS. Ihr Format ist
  119.                      mit dem Kuma-Format fast identisch, so daß diese bei
  120.                      diesen Dateien nur die Extension in *.RSD umbenannt
  121.                      werden muß.       
  122.                      Dies ist auch äußerst sinnvoll, da sich die Extension
  123.                      *.DEF zum Standard für Modula 2-Definitionsmodule ent-
  124.                      wickelt hat.   
  125.        4. Definitionsdatei im DRI-Format laden:
  126.           Siehe unter 2.3 !
  127.        5. Beliebige Datei laden:
  128.           Eine Datei wird in per GEMDOS 'Malloc' reservierten
  129.           Speicher geladen. Diese Datei kann angezeigt, editiert und
  130.           abgespeichert werden, letzteres auch als DATAs für Basic.
  131.     3. Analyse-Menü
  132.        1. Speichermonitor: 
  133.           Theoretisch kann man sich hiermit den gesamten Adreßraum des ST
  134.           anzeigen lassen. Praktisch sind jedoch nur zugänglich:
  135.                 - RAM-Adreßbereich: $0      - $3FFFFF
  136.                 - ROM-Adreßbereich: $FA0000 - $FEFFFF (normalerweise !)
  137.           Folgende Tasten sind belegt:
  138.                 - '0'-'9' und 'A'-'F': Eingabe eines HEX-Bytes an der 
  139.                                        aktuellen Cursorposition
  140.                 - 'S': Ab Adresse ... anzeigen.
  141.                        Sie können die Adresse hexadezimal ('$' am Anfang) 
  142.                        oder dezimal eingeben. 
  143.                 - 'M': Schreib-Modus: Es gibt zwei Schreib-Modi: Im Normal-
  144.                        Modus kann man bestimmte Adressen, die System-
  145.                        variablen, nur lesen und nicht beschreiben. Das 
  146.                        Beschreiben ist nur im Supervisor-Modus erlaubt.
  147.                 - Pfeil hoch, links, rechts, runter: Cursor-Steuerung.
  148.                 - Ctrl Pfeil links, rechts: Cursor an Seitenrand.
  149.                 - Ctrl Pfeil hoch, runter: Seite zeilenweise scrollen.     
  150.           ACHTUNG: Fehlerhafte Zugriffe werden nicht abgefangen !!
  151.        2. Dateimonitor:
  152.           Hiermit können Sie sich Dateien anzeigen lassen und Änderungen
  153.           vornehmen. 
  154.           Die Steuerung erfolgt wie im Speicher-Monitor.
  155.        3. RSC-Header anzeigen: 
  156.           Der RSC-Header wird vollständig ausgewertet. Es kann jedoch
  157.           vorkommen, daß die Daten nicht der Norm entsprechen, z.B.
  158.           setzt Megamax Modula's RCS immer das 1. Word auf 1 !!
  159.           Durch diesen Aufruf werden gleichzeitig einige wichtige
  160.           Variablen initialisiert, weshalb er nach jedem Laden einer
  161.           RSC-Datei automatisch vorkommt.
  162.        4. Objektbaum in logischer Reihenfolge anzeigen:
  163.           Vom ersten Objekt eines beliebigen Baums ausgehend, wird 
  164.           dieser in seiner hierarchischen Verknüpfung angezeigt.
  165.           Wenn im jeweiligen Objekt vorhanden, kann auch eine 
  166.           weitere Struktur angezeigt werden (String, TEDINFO, BITBLK,
  167.           ICONBLK oder USERBLK).
  168.           Erklärung der Objektdaten:
  169.             - Wenn neben der Objektart ein X und eine Zahl stehen, bedeutet 
  170.               das, daß der Objekttyp im Highbyte die angegebene Zahl als 
  171.               Erweiterung enthält.
  172.             - Anstelle des Zeigers kann das Objekt auch eine Erläuterung
  173.               des Aussehens des Objekts enthalten (OBJ+12). Hierbei gilt:
  174.                 DRi. = Dicke des Rahmens (innen)
  175.                 DRa. = Dicke des Rahmens (außen)
  176.                 RF.  = Rahmenfarbe
  177.                 TF.  = Textfarbe
  178.                 T    = transparent
  179.                 D    = deckend
  180.                 FF.  = Füllfarbe
  181.                 IF.  = Innenfarbe
  182.           Der Rest erklärt sich von selbst.    
  183.        5. Objekte in physikalischer Reihenfolge anzeigen:
  184.           Die Objekte werden in der Reihenfolge angezeigt, in der sie
  185.           im Objektfeld vorliegen. Dazu wird zu jedem Objekt die 
  186.           logische Baum- und Objektnummer ausgerechnet.
  187.           Auch hier kann man sich die weiteren Strukturen anzeigen 
  188.           lassen.
  189.        6. Objektfeld durchsuchen:
  190.           Hiermit kann man das gesamte Objektfeld entweder nach Nullzeigern
  191.           oder nach Objekten einer bestimmten Art durchsuchen lassen.
  192.           Wenn man ein Objekt gefunden hat, daß das Suchkriterium erfüllt,
  193.           wird dieses automatisch angezeigt. Dann hat man noch die Wahl, ob
  194.           man sich eine evtl. vorhandene zum Objekt gehörende weitere
  195.           Struktur anzeigen lassen möchte oder ob das nächste Objekt dieses
  196.           Typs gesucht werden soll.
  197.        7. Freie Strings anzeigen:
  198.           Hiermit kann man sich alle freien Strings, die die Resource ent-
  199.           hält, hintereinander anzeigen lassen.
  200.           Bei freien Strings handelt es sich meistens um die Texte von 
  201.           Alertboxen.
  202.        8. Freie Images anzeigen:
  203.           Hiermit kann man sich die BITBLK-Strukturen der freien Images 
  204.           anzeigen lassen.      
  205.        9. Def.-Datei anzeigen:
  206.           Hiermit kann man sich alle Variablen anzeigen lassen. Weiterhin
  207.           wird bei Objekten auf den Namen des Baums, zu dem das Objekt 
  208.           gehört, angegeben. 
  209.       10. GLOBAL[]-Feld anzeigen: 
  210.           Man kann sich hiermit das GLOBAL[]-Feld anzeigen lassen.
  211.           Dieses Feld ist eine Struktur, in der sich das AES von 
  212.           jedem aktiven Prozeß wichtige Daten merkt (da der ST kein
  213.           Multitasking beherrscht, gibts nur eine Struktur davon!).
  214.     4. RSC-Manipulations-Menü
  215.        1. GLOBAL[]-Feld setzen:
  216.           Hiermit kann man die Werte in das AES-interne GLOBAL[]-Feld eintra-
  217.           gen, die auch beim Laden einer Datei mit AES 'rsrc_load' gesetzt 
  218.           werden: Länge und Adresse des reservierten Bereichs, Anfangsadresse 
  219.           der Objektbaum-Tabelle.
  220.        2. Objektkoordinaten umrechnen: 
  221.           Rechnet die Koordinaten, an denen das Objekt positioniert
  222.           werden soll, von Zeichen- in Pixelauflösung um. 
  223.           Bei den übrigen Strukturen (TEDINFO usw.) liegen die 
  224.           Koordinaten schon in Pixel vor.
  225.        3. Zeiger der RSC-Datei umrechnen: 
  226.           In der unveränderten RSC-Datei haben alle Adressen Wordlänge und
  227.           beziehen sich auf den Anfang der RSC-Datei im Speicher. Mit diesem 
  228.           Menüpunkt werden alle Adressen auf absolute Longwerte umgerechnet.
  229.           Umgerechnet werden alle Adressen im Objektfeld, die Adressen der
  230.           freien Images und Strings sowie alle Adressen aus der Objketbaum-
  231.           Tabelle.
  232.     5. Optimierung von RSC-Dateien
  233.           Hiermit werden RSC-Dateien durch Löschen doppelter Strings und 
  234.           Bilder sowie dem Umsetzen deren Zeiger verkürzt. Die Optimierung
  235.           bringt im Schnitt ca. 10%, die Funktionstüchtigkeit des Resultats
  236.           bleibt zu 99% (oder gar 100% ?) gewährleistet.
  237.           Man könnte zwar durch das Löschen identischer Strukturen noch eine 
  238.           weitere Optimierung erreichen; dies habe ich jedoch nicht 
  239.           eingebaut, da der Mehraufwand erheblich wäre (ca. 20 kB Code !)
  240.           und die weitere Verkürzung nicht mehr so viel bringen würde.
  241.           WICHTIG: Wenn man in der Resource nur Platz reservieren möchte, um
  242.                    dort zum Beispiel Rechenergebnisse zur späteren Ausgabe
  243.                    abzulegen, dann darf dieser Platzhalter logischerweise 
  244.                    nicht mitoptimiert werden.
  245.                    Aus diesem Grunde werden von RESAUCE Strings, die aus 
  246.                    lauter Neunen bestehen, nicht mitoptimiert !! 
  247.     6. Speicher-Menü 
  248.        1. Datei speichern unter ...
  249.           Die Datei wird in dem Format, in dem sie vorlag, wieder
  250.           abgespeichert. Änderungen werden übernommen.
  251.        2-4. Datei als DATAs für GFA-Basic abspeichern:
  252.             Die ASCII-Werte der einzelnen Bytes werden als DATAs 
  253.             gespeichert. 
  254.             Hierbei gibt es verschiedene Stufen, wie groß die dazuge-
  255.             hörigen Routinen ausfallen:
  256.             2. nur die DATAs inklusive einer Routine, die die
  257.                DATAs in ein Speicherstück lädt.
  258.             3. Dazu werden die Adressen einer RSC-Datei umge-
  259.                rechnet und das AES-Global[]-Feld ergänzt.
  260.                Diese Auswahl ist nur sinnvoll, wenn die RSC-
  261.                Datei normal geladen wurde und die Koordinaten                 
  262.                schon umgerechnet wurden. In diesem Falle läuft
  263.                die Datei problemlos in der Auflösung, die bei 
  264.                der Behandlung der Resource eingestellt war !!
  265.             4. Die Routine rechnet auch noch die Koordinaten
  266.                um, so daß die Resource in allen Auflösungen
  267.                lauffähig ist. Hierzu darf die Datei noch nicht
  268.                mit AES-Mitteln manipuliert worden sein.
  269.        5. Definitionsdatei im Kuma-Format speichern:
  270.           Wenn man eine Definitionsdatei geladen hat, kann man diese hiermit
  271.           im Kuma-Format, also mit der Endung '*.RSD', abspeichern.
  272.           Siehe 2.3 !!
  273.        6. Definitionsdatei im DRI-Format speichern:
  274.           Wenn man eine Definitionsdatei geladen hat, kann man diese hiermit
  275.           im Format des RCS V2.0 von Digital Research, also mit der Endung
  276.           '*.RSD', abspeichern.
  277.           Siehe 2.3 !! 
  278.   Esc. Ende des Programms !!        
  279.  
  280.  
  281.  --------------------------- Eine kleine Bitte -----------------------------
  282.  
  283.  Falls Sie Fehler oder Verbesserungsmöglichkeiten gefunden haben, schicken
  284.  Sie diese bitte an die folgende (meine) Adresse:
  285.  
  286.                       Tilman Neumann
  287.                       Zum Walde 11
  288.                       3155 Edemissen
  289.  
  290.  
  291.  Wenn Sie eine Diskette plus frankiertem Rückumschlag mitschicken, gibt's 
  292.  möglichst schnell die verbesserte Version zurück.
  293.  
  294.  Also denne, viel Spaß bei der Benutzung.
  295.    
  296.  
  297.